Recoverable Errors (পুনরুদ্ধারযোগ্য ত্রুটি)
পুনরুদ্ধারযোগ্য ত্রুটি (Recoverable errors) হল এমন ত্রুটি যেগুলি প্রোগ্রাম চলাকালীন সময়ে পুনরুদ্ধার করা যেতে পারে বা তাদের সমাধান করা যেতে পারে। এই ধরনের ত্রুটি সাধারণত ব্যবহারকারীর ইনপুটের কারণে বা বাহ্যিক উৎস থেকে আসে, যেমন ফাইল খোলার চেষ্টা করা, ইন্টারনেট কানেকশনের সমস্যা ইত্যাদি।
Recoverable Errors Handling in Rust
রাস্টে, এই ধরনের ত্রুটিগুলি Result টাইপ ব্যবহার করে পরিচালনা করা হয়। Result হল একটি enum যা দুটি ভ্যারিয়েবল ধারণ করে:
Ok(T)- সফল রিটার্ন ভ্যালু (অর্থাৎ কোনো ত্রুটি হয়নি)Err(E)- ত্রুটি ভ্যালু (যেখানেEত্রুটির বিস্তারিত)
উদাহরণ:
use std::fs::File;
use std::io::Read;
fn read_file() -> Result<String, std::io::Error> {
let mut file = File::open("example.txt")?; // ফাইল খোলার চেষ্টা করা
let mut contents = String::new();
file.read_to_string(&mut contents)?;
Ok(contents)
}
fn main() {
match read_file() {
Ok(contents) => println!("File contents: {}", contents),
Err(e) => println!("Error reading file: {}", e),
}
}এখানে, File::open এবং read_to_string দুটি কার্যকলাপ recoverable errors ফেলে, যেগুলিকে Result enum ব্যবহার করে পুনরুদ্ধার করা যায়। যদি ফাইল খোলার সময় কোনো সমস্যা হয়, তাহলে Err ফেরত আসবে, আর অন্যথায় Ok ফেরত আসবে।
Unrecoverable Errors (অপুনরুদ্ধারযোগ্য ত্রুটি)
অপুনরুদ্ধারযোগ্য ত্রুটি (Unrecoverable errors) হল এমন ত্রুটি যেগুলি সাধারণত প্রোগ্রামের চলমান অবস্থার জন্য অপ্রত্যাশিত এবং একে পুনরুদ্ধার করা সম্ভব নয়। এগুলি প্রোগ্রাম চলাকালীন সময়ে এমন পরিস্থিতিতে ঘটে যেখানে প্রোগ্রামকে থামিয়ে দেওয়া অথবা অন্যভাবে হ্যান্ডেল করা ছাড়া কোনো বিকল্প নেই।
Unrecoverable Errors Handling in Rust
রাস্টে, অপুনরুদ্ধারযোগ্য ত্রুটি panic! ম্যাক্রো ব্যবহার করে হ্যান্ডেল করা হয়। এই ম্যাক্রোটি ত্রুটি ঘটানোর সময় প্রোগ্রামটি থামিয়ে দেয় এবং প্রোগ্রামকে ক্র্যাশ করে।
উদাহরণ:
fn divide(x: i32, y: i32) -> i32 {
if y == 0 {
panic!("Attempted to divide by zero!"); // অপুনরুদ্ধারযোগ্য ত্রুটি
}
x / y
}
fn main() {
let result = divide(10, 0); // এখানে panicked হবে
println!("Result: {}", result);
}এখানে, divide ফাংশনটি y এর মান 0 হলে panic! ম্যাক্রো ব্যবহার করে প্রোগ্রামটি থামিয়ে দেয়। এই ধরনের ত্রুটি সাধারণত সেই ক্ষেত্রে ঘটে যেখানে একে পুনরুদ্ধার করা সম্ভব নয় এবং প্রোগ্রামকে থামানো ছাড়া অন্য কোনো উপায় থাকে না।
Recoverable এবং Unrecoverable Errors এর মধ্যে পার্থক্য
| পার্থক্য | Recoverable Errors (পুনরুদ্ধারযোগ্য) | Unrecoverable Errors (অপুনরুদ্ধারযোগ্য) |
|---|---|---|
| উদাহরণ | ফাইল না পাওয়া, ইন্টারনেট কানেকশন সমস্যার কারণে ডাটা পাঠাতে না পারা | 0 দিয়ে ভাগ করার চেষ্টা, ইনডেক্স আউট অফ রেঞ্জ |
| হ্যান্ডলিং | Result enum ব্যবহার করে, match বা unwrap দিয়ে হ্যান্ডেল করা হয় | panic! ম্যাক্রো ব্যবহার করে, প্রোগ্রাম বন্ধ হয়ে যায় |
| পুনরুদ্ধারযোগ্যতা | পুনরুদ্ধার করা সম্ভব | পুনরুদ্ধার করা সম্ভব নয় |
| ফলস্বরূপ | প্রোগ্রাম চালু থাকে, তবে ফলস্বরূপে ত্রুটি হতে পারে | প্রোগ্রাম থেমে যায় এবং ত্রুটির বার্তা দেখানো হয় |
সারাংশ
রাস্টে ত্রুটির দুটি প্রধান ধরন রয়েছে:
- Recoverable errors (পুনরুদ্ধারযোগ্য ত্রুটি): এগুলি
Resultenum ব্যবহার করে হ্যান্ডল করা হয় এবং প্রোগ্রাম চলতে থাকে। উদাহরণস্বরূপ, ফাইল না খোলা বা ইন্টারনেট কানেকশন সমস্যা। - Unrecoverable errors (অপুনরুদ্ধারযোগ্য ত্রুটি): এগুলি
panic!ম্যাক্রো ব্যবহার করে হ্যান্ডল করা হয়, যেখানে প্রোগ্রাম থেমে যায়। উদাহরণস্বরূপ, 0 দিয়ে ভাগ করা বা আউট অফ বাউন্ড ইনডেক্স অ্যাক্সেস করা।
রাস্টের এই দুটি ত্রুটি হ্যান্ডলিং মডেল প্রোগ্রামারের জন্য শক্তিশালী এবং নিরাপদ প্রোগ্রামিংয়ের সুবিধা প্রদান করে।
Read more